<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 块级作用域 是相对于 声明变量来体现的。
        // {
        //    let 
        //    const 
        // }

        // var a= 12;

        // console.log(window.a);

        // let b = 5;

        // console.log(window.b); //undefined


        // const n = 'a';

        // n = "b";


        // 声明的常量 如果存的是对象或数组，修改对象当中的值，是不会报错的
        // const n = {a:12};

        // n.a = 5;

        // console.log(n);

        // function fn(){

        // }


        //√ 如果需要在块级作用域下声明函数  建议使用函数表达式方式声明
        // let fn2 = function(){

        // }


        // 解构赋值 -> 将数据格式 按照原本的样子 放到 = 左面。

        // let obj = {
        //     name:"laowang",
        //     age:18
        // }

        // let {name,age} = obj;

        // console.log(name,age);

        // let arr = [1,2,3];

        // let [a,b,c] = arr;

        // console.log(a,b,c);


        // function fn(a,b,c){
        //     console.log(a,b,c);

        // }

        // fn(1,2,3)

        // function fn({b,a}){
        //     // let {a,b} = {a:12,b:5}
        //     // console.log(obj.a);
        //     // console.log(obj.b);

        //     console.log(a);
        //     console.log(b);
        // }

        // fn({
        //     a:12,
        //     b:5
        // })

        

        //剩余运算符
        // function fn({a:name,d=100,...obj}){
        //     // console.log(a);//12
        //     console.log(obj); //{b:5,c:6}
        //     console.log(d); //undefined
        //     console.log(name);
        // }

        // fn({
        //     a:12,
        //     b:5,
        //     c:6,
        //     // d:888
        // })


        // let [,b,,d,...arr] = [1,2,3,4,5,6];

        // // console.log(a,b,c,d);
        // console.log(b,d,arr);

        // let arr = [1,2,3];

        // let arr2 = [...arr];


        // 函数传参解构时：避免报错，调用时应该加一个对应的对象格式
        // function fn({a=12}={}){
        //     console.log(a);
        // }

        // fn({
        //     a:12
        // });

        // fn({});

        // fn()


        //函数参数默认值
        function fn(a=12){
            console.log(a);
        }

        fn(666);


    </script>
</body>
</html>